﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace StuertzDatenbank
{
    public partial class KundeHinzufügenGui : Form
    {
        private Sprachfile sprachfile;
        public KundeHinzufügenGui(Benutzer benutzer)
        {
            this.benutzer = benutzer;
            dbf = new DBF();
            sprachfile = new Sprachfile();
            aktuellerKunde = new Kunde(-1);

            ansprechpartnerliste = new List<Ansprechpartner>();
            geslechterliste = new List<Geschlecht>();
            spracheliste = new List<Sprache>();


            InitializeComponent();
            InitializeComponentChange();
            
            Refresh();

        }

        

        private void InitializeComponentChange()
        {
            this.Start.Text = sprachfile.Start;
            this.label1.Text = sprachfile.Kundennummer;
            this.label2.Text = sprachfile.Kundenname;
            this.Kunde.Text = sprachfile.Kunde;
            this.Speichern.Text = sprachfile.Speichern;
            this.Ansprechpartnerlabel.Text = sprachfile.Ansprechpartner;
            this.Ansprechpartnerlabel.Text = sprachfile.Ansprechpartner;
            this.label3.Text = sprachfile.Geschlecht;
            this.label4.Text = sprachfile.Name;
            this.label5.Text = sprachfile.Vorname;
            this.label6.Text = sprachfile.Titel;
            this.label7.Text = sprachfile.Fachbereich;
            this.label8.Text = sprachfile.Telefon1;
            this.label9.Text = sprachfile.Telefon2;
            this.label10.Text = sprachfile.Email;
            this.label11.Text = sprachfile.Fax;
            this.label12.Text = sprachfile.Kommentar;
            this.label13.Text = sprachfile.Sprache;
            this.NeuerAnsprechpartnerButton.Text = sprachfile.Neu;
            this.Ansprechpartnerspeichernbutton.Text = sprachfile.Speichern;
            this.AnsprechpartnerloeschenButton.Text = sprachfile.Loeschen;
            this.Text = sprachfile.Kundehinzufügen;
            //Geschelcht
            geslechterliste = dbf.alleGeschlechterAusgeben();
            for (int i = 0; i < geslechterliste.Count; i++)
            {
                this.Geschlechtbox.Items.Add(geslechterliste[i].getGeschlecht());
            }
            //Sprache
           spracheliste = dbf.alleSprachenAusgeben();
            for (int i = 0; i < spracheliste.Count; i++)
            {
                this.SprachecheckedListBox.Items.Add(spracheliste[i].getSprache());

            }
            //Ansprechpartner
            AnsprechpartnerBox.Items.Clear();
            AnsprechpartnerBox.Items.Add(sprachfile.NeuerAnsprechpartner);

            this.Refresh();

        }

        private void AnsprechpartnerChanged()
        {
            ansprechpartnerliste = aktuellerKunde.getAnsprechpartner();
            this.AnsprechpartnerBox.Items.Clear();
            for (int i = 0; i < ansprechpartnerliste.Count; i++)
            {
                this.AnsprechpartnerBox.Items.Add(ansprechpartnerliste[i].getNachname());
            }

            this.Refresh();
        }



        private void Start_Click(object sender, EventArgs e)
        {
            this.Visible = false;
            startgui gui = new startgui(benutzer);
            this.Dispose();
            gui.ShowDialog();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            this.Visible = false;
            KundeGui gui = new KundeGui(benutzer);
            this.Dispose();
            gui.ShowDialog();
        }

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (ansprechpartnerliste.Count > 0)
            {
                ansprechpartneranzeigen(ansprechpartnerliste[this.AnsprechpartnerBox.SelectedIndex]);

            }


        }

        private void ansprechpartneranzeigen(Ansprechpartner ansprechpartner)
        {
            this.Geschlechtbox.SelectedText = ansprechpartner.getGeschlecht().getGeschlecht();
            this.Namebox.Text = ansprechpartner.getNachname();
            this.Vornamebox.Text = ansprechpartner.getVorname();
            this.Titelbox.Text = ansprechpartner.getTitel();
            this.Fachbereichbox.Text = ansprechpartner.getFachbereich();
            this.Telefon1box.Text = ansprechpartner.getTelefon1();
            this.Telefon2box.Text = ansprechpartner.getTelefon2();
            this.Emailbox.Text = ansprechpartner.getEmail();
            this.Faxbox.Text = ansprechpartner.getFax();
            this.Kommentarbox.Text = ansprechpartner.getKommentar();
            for (int i = 0; i < ansprechpartner.getSprache().Count; i++)
            {
                if (SprachecheckedListBox.Items[i].ToString() == ansprechpartner.getSprache()[i].getSprache().ToString())
                {
                    this.SprachecheckedListBox.SetItemChecked(i, true);
                }
                else
                {
                    this.SprachecheckedListBox.SetItemChecked(i, false);
                }
            }


        }

        private void Speichern_Click(object sender, EventArgs e)
        {





            //aktuellerkunde.setID();
            aktuellerKunde.setKundennummer(int.Parse(this.KundennummerBox.Text));
            aktuellerKunde.setName(this.KundennameBox.Text);

            dbf.kundeEintragen(aktuellerKunde);

            this.Visible = false;
            KundeGui gui = new KundeGui(benutzer);
            this.Dispose();
            gui.ShowDialog();
        }


        public Benutzer benutzer { get; set; }

        private void KundeHinzufügenGui_Load(object sender, EventArgs e)
        {

        }

        private DBF dbf;



        private void NeuerAnsprechpartnerButton_Click(object sender, EventArgs e)
        {
            this.Geschlechtbox.SelectedText = "";
            this.Namebox.Text = "";
            this.Vornamebox.Text = "";
            this.Titelbox.Text = "";
            this.Fachbereichbox.Text = "";
            this.Telefon1box.Text = "";
            this.Telefon2box.Text = "";
            this.Emailbox.Text = "";
            this.Faxbox.Text = "";
            this.Kommentarbox.Text = "";
            for (int i = 0; i < SprachecheckedListBox.Items.Count; i++)
            {
                this.SprachecheckedListBox.SetItemChecked(i, false);

            }

        }

        private void Ansprechpartnerspeichernbutton_Click(object sender, EventArgs e)
        {
            Ansprechpartner aktuelleransprechpartner = new Ansprechpartner(-1);


            aktuelleransprechpartner.setGeschlecht(geslechterliste[this.Geschlechtbox.SelectedIndex]);
            aktuelleransprechpartner.setNachname(this.Namebox.Text);
            aktuelleransprechpartner.setVorname(this.Vornamebox.Text);
            aktuelleransprechpartner.setTitel(this.Titelbox.Text);
            aktuelleransprechpartner.setFachbereich(this.Fachbereichbox.Text);
            aktuelleransprechpartner.setTelefon1(this.Telefon1box.Text);
            aktuelleransprechpartner.setTelefon2(this.Telefon2box.Text);
            aktuelleransprechpartner.setEmail(this.Emailbox.Text);
            aktuelleransprechpartner.setFax(this.Faxbox.Text);
            aktuelleransprechpartner.setKommentar(this.Kommentarbox.Text);

            List<Sprache> aktuellesprachliste = new List<Sprache>();
            for (int i = 0; i < SprachecheckedListBox.Items.Count; i++)
            {
                if (this.SprachecheckedListBox.GetItemChecked(i))
                {

                    aktuellesprachliste.Add(this.spracheliste[i]);

                }
            }
            aktuelleransprechpartner.setSprache(aktuellesprachliste);
            aktuellerKunde.addAnsprechpartner(aktuelleransprechpartner);

            this.NeuerAnsprechpartnerButton_Click(sender, e);
            AnsprechpartnerChanged();
        


        }

        private void AnsprechpartnerloeschenButton_Click(object sender, EventArgs e)
        {
            
            if (ansprechpartnerliste.Count > 0)
            {
                
                 aktuellerKunde.getAnsprechpartner().Remove(ansprechpartnerliste[this.AnsprechpartnerBox.SelectedIndex]);
                 ansprechpartnerliste.RemoveAt(this.AnsprechpartnerBox.SelectedIndex);
            }
        }

        public List<StuertzDatenbank.Ansprechpartner> ansprechpartnerliste { get; set; }

        public List<Geschlecht> geslechterliste { get; set; }

        public List<Sprache> spracheliste { get; set; }


        public Kunde aktuellerKunde { get; set; }
    }
}
